照英文書名翻,應該是無瑕的架構,不過書商可能為了銷量,所以借了名稱。
本書分為六個部份
第一個部份講 design 設計與架構 architecture 的不同。
第二個部份講範式(結構化程式設計在直接的控制移轉上加上規範):
結構化程式設計
物件導向
函數式
第三個部份講設計原則
SRP 單一職責
OCP 開放-封閉
Liskov 替換
ISP 介面隔離
DIP 依賴反向
第四個部份講元件: 內聚性 耦合性
第五個部份講架構:獨立性 邊界的畫線及剖折 策略和層級 業務規則…
第六個部份講細節:資料庫 Web 框架 案例 …
要獲得一個寫程式的工作並不需要大量的知識和技能。高中的孩子也都在做。大學裡的年輕男女只是拼湊幾行 PHP 或 Ruby 就開始做起數十億美元的生意。世界各地的辦公隔間裡坐滿了許多初級程式設計師,在追蹤系統而導致的龐大工作議題及與之帶來的大量需求文件中,他們辛苦地用蠻力讓他們的系統能夠「工作」。他們產出的程式碼可能不太好;但能夠工作。它是能夠工作的,因為讓某些東西工作(如果只工作一次)並沒有那麼難。
正確的做法卻完全是另一回事。要讓軟體正確是困難的。它需要大多數年輕程式設計師尚未獲得的知識和技能。這需要大多數程式設計師沒有花時間去做的思考和洞察力。這需要大多數程式設計師從未意識到的紀律和忠誠奉獻。在大多數情況下,對於工藝(craft)和成為專業人士的渴望需要的是激情。
當你讓軟體正確時,會發生一些奇蹟:你不需要大量的程式設計師來持續讓它工作。 你不需要大量的需求文件和追蹤系統所牽涉到的龐大工作議題。你不需要分布全球的 眾多辦公隔間和全年無休地寫程式。
當軟體以正確的方式完成時,就只需要建立和維護它的一小部分人力。修改變得簡單又迅速。缺陷是少之又少。花費的精力是最少的,功能和靈活性卻是最大的。
是的,這個願景聽起來有些烏托邦。但我去過那兒,我親眼見過它發生。我曾在專案 的系統設計和架構方面下過工,使它變得易於編寫和維護。我所經歷的專案只需要預 期人力的一小部分。我在缺陷率極低的系統上工作。我看過良好的軟體架構在系統、 專案和團隊中的非凡效果。我去過應許之地(樂土)。
⭐⭐⭐⭐
程式撰寫能力
中階以上
作者依循一貫的寫作方式,將 architecture 架構這件事由淺入深講述完整。